Ricky の 大模型学习之路
微调
微调概念清单
- 为什么需要微调 ?✅(2025.3.11)
- 微调的概念 ✅ (2025.3.11)
- 微调的步骤 ✅ (2025.3.11)
- 微调的策略分类 ✅ (2025.3.11)
- 微调的框架
- 具体的微调框架
- 微调的挑战 ✅ (2025.3.11)
- 微调的相关术语
为什么需要微调?
虽然预训练的 LLM(如 GPT-4、LLaMA)已经学到了大量知识,但在具体应用中,可能仍然有以下问题:
- 领域适应性不足:如医疗、法律、金融等专业领域的语言和表达方式。
- 任务针对性不强:如情感分析、摘要生成、代码生成等特定任务。
- 未掌握特定风格:比如让 ChatGPT 说话更像某个品牌,或者适应某种语气。
微调的概念
大模型微调是指在预训练大模型的基础上,通过特定任务的数据对大模型进一步训练(修改大模型的部分参数、调整大模型的结构等),以提升大模型在该特定任务上的表现。
微调的步骤
- 准备微调数据集
- 准备预训练模型
- 调整模型结构(调整模型的输出层)
- 使用微调技术进行训练
- 验证与测试
微调的策略分类
- 全模型微调(Full Fine-Tuning)
- 微调所有参数,适合数据充足的情况。
- 参数高效微调(PEFT, Parameter Efficient Fine-Tuning)
- 只更新模型的一部分参数,而冻结大部分参数,减少计算量。
- 低秩适应微调(LoRA,Low-Rank Adaptation)
- 在预训练模型的权重矩阵上添加低秩矩阵,只训练这些低秩矩阵,从而大幅减少需要训练的参数数量。
- 适配器微调(Adapter Fine-Tuning)
- 在预训练模型中插入小的适配器模块,只训练这些适配器模块,而保持预训练模型的参数不变。适配器模块通常是一个小的神经网络层。
- 提示微调(Prompt Tuning,P-tuning)
- 提示微调是一种新兴的微调方法,通过在输入中添加特定的提示,引导模型生成期望的输出,而不需要大量修改模型参数。
- 知识蒸馏微调(Knowledge Distillation Fine-Tuning)
- 知识蒸馏微调是指使用一个已经训练好的大模型(教师模型)来指导一个小模型(学生模型)的训练。通过这种方式,学生模型可以学习教师模型的知识,从而在特定任务上表现更好。
微调的挑战
- 数据需求:微调需要大量标注数据,数据不足时效果受限。
- 计算资源:大模型微调需要大量计算资源,尤其是全模型微调。
微调的相关术语
微调(Fine-tuning)相关术语总结表
中文术语 | 英文术语 | 术语解释 |
---|---|---|
预训练 | Pre-training | 在大规模无监督数据集上训练模型,使其学习通用语言特征。 |
微调 | Fine-tuning | 在特定领域或任务数据上进一步训练预训练模型,以提升其性能。 |
监督微调 | Supervised Fine-tuning | 使用带有标签的数据进行微调,让模型学习任务的正确输出。 |
低秩适配 | LoRA (Low-Rank Adaptation) | 一种高效微调方法,通过对权重矩阵添加低秩适配层来减少计算成本。 |
参数高效微调 | PEFT (Parameter Efficient Fine-tuning) | 只调整部分参数(如 LoRA、Adapter),而非整个模型,以减少计算需求。 |
适配器 | Adapter | 在 Transformer 层之间插入的小型网络模块,用于高效微调。 |
全参数微调 | Full Fine-tuning | 调整整个模型的所有参数,通常需要更高的计算资源。 |
指令微调 | Instruction Fine-tuning | 通过提供不同的指令数据,使模型更擅长遵循指令。 |
强化学习微调 | RLHF (Reinforcement Learning from Human Feedback) | 结合人类反馈进行强化学习,使模型的回答更符合人类期望。 |
数据集 | Dataset | 用于微调的文本或任务数据,通常分为训练集、验证集和测试集。 |
迁移学习 | Transfer Learning | 在一个任务上训练的模型权重用于另一个任务,以减少训练成本。 |
温度参数 | Temperature | 控制模型输出的随机性,较高温度增加创造性,较低温度增加确定性。 |
Token 限制 | Token Limit | LLM 处理的最大 token 数,影响训练和推理过程的上下文长度。 |
训练损失 | Training Loss | 衡量模型在训练集上的误差,常见损失函数有交叉熵损失(Cross-Entropy Loss)。 |
验证损失 | Validation Loss | 衡量模型在验证集上的表现,用于避免过拟合。 |
过拟合 | Overfitting | 模型在训练数据上表现良好,但在新数据上泛化能力较差。 |
梯度累积 | Gradient Accumulation | 通过多次累积小批量梯度来模拟更大的批次,降低显存需求。 |
梯度裁剪 | Gradient Clipping | 防止梯度爆炸的技术,限制梯度的最大值。 |
学习率 | Learning Rate | 控制模型参数更新步伐的超参数,影响收敛速度和稳定性。 |
预训练权重 | Pretrained Weights | 经过大规模数据训练的模型参数,可以在微调时进一步优化。 |
AdamW 优化器 | AdamW Optimizer | 一种改进的 Adam 优化器,广泛用于 LLM 微调。 |
训练步数 | Training Steps | 训练过程中进行参数更新的次数,影响模型的收敛情况。 |
Batch Size | 批次大小 | 训练时一次处理的数据样本数量,影响计算开销和收敛速度。 |
Prompt 工程 | Prompt Engineering | 通过设计输入提示词来引导 LLM 生成期望的输出。 |
指令数据 | Instruction Data | 训练模型遵循指令格式的数据,如 “请总结这篇文章”。 |
增量微调 | Incremental Fine-tuning | 在已有的微调模型上进一步训练,而不是从基础模型开始。 |
混合精度训练 | Mixed Precision Training | 结合 FP16 和 FP32 进行训练,以减少显存占用并加速计算。 |
零样本学习 | Zero-shot Learning | 模型在未见过的任务上进行预测,无需额外训练。 |
少样本学习 | Few-shot Learning | 通过少量示例让模型适应新任务,提高泛化能力。 |
全精度训练 | Full Precision Training | 使用 FP32 进行训练,计算精度高但显存占用大。 |